package tpgrandt.control;

import tpgrandt.UI.Validador;
import tpgrandt.dao.*;
import tpgrandt.excepciones.*;
import tpgrandt.varios.*;

/**
 * @version 1.0
 * @created 19-Jan-2010 18:07:42
 */
public class GestionEquipo {

    private tpgrandt.varios.Participante participante;
    private EquipoFantasia equipo;
    private int accion;

    public static final int CREAR_EQUIPO = 0;
    public static final int MODIFICAR_EQUIPO = 1;

    /**
     *
     * @param user
     */
    public GestionEquipo(tpgrandt.varios.Participante usr) {
        this.participante = usr;
        this.equipo = usr.getEquipo_fantasia();

        /*
        if (PeriodoDeVeda.esPeriodoDeVeda())
            throw algo;
        */

        if (equipo.ultimoPlantel() == null) {
            accion = CREAR_EQUIPO;
            equipo.agregarPlantel(FechaDAO.fechaActual());
        } else {
            accion = MODIFICAR_EQUIPO;
            if (FechaDAO.fechaActual() != equipo.ultimoPlantel().getFecha())
                equipo.agregarNuevoPlantel();
        }
    }

    public int getAccion() {
        return accion;
    }

    public int getFechaActual() {
        return FechaDAO.fechaActual();
    }

    public PlantelFecha ultimoPlantel() {
        return equipo.ultimoPlantel();
    }

    public String getNombreEquipo() {
        return equipo.getNombre();
    }

    public EquipoPrimera[] listarEquipos() {
        return EquipoPrimeraDAO.listarEquipos();
    }
    
    /**
     *
     * @param puesto
     * @param club
     * @param cotizacion_min
     * @param cotizacion_max
     */
    public Jugador[] listarJugadores(int puesto, int club, int cotizacion_min, int cotizacion_max){
        return JugadorDAO.listarJugadores(puesto, club, cotizacion_max, cotizacion_min);
    }

    public boolean guardarEquipo(String nombre) throws Excepcion {
        if(ultimoPlantel().equipoCompleto()) {
            if(Validador.isName(nombre))
                equipo.setNombre(nombre);
            ultimoPlantel().confirmar();
        }
        else
            throw new PlantelIncompletoException();

        GeneralDAO.guardarUltimoPlantel(participante, accion);
        Auditoria.auditarCreacionEquipo(participante);
        return true; }

   public boolean guardarEquipo() throws EquipoFantasiaExistenteException {
        ultimoPlantel().confirmar();
        GeneralDAO.guardarUltimoPlantel(participante, accion);
        return true; }
}
